<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 函数 => 完成特定功能的工具 

    // 9   => [1,9] => [2,8] => 2 3 4 5 6 7 8  是否存在某个数可以整数9
    // num   => [1,num] => [2,num-1] =>  范围中是否存在某个数可以整除num

    //假设法   => 判断一个范围中是否存在满足条件的元素( 假设都不满足 => 找一个满足)
    //        => 判断一个范围中 是否都满足某个条件 (假设都满足 => 找一个不满足)

    // var num = 9;
    // var flag = true; // 假设是素数

    // for (var i = 2; i < num; i++) {
    //     if (num % i == 0) { //如果存在能整除num的数
    //         flag = false;  // 不是素数(合数)
    //         break;
    //     }
    // }
    // if (flag) {
    //     document.write(num + "是素数");
    // } else {
    //     document.write(num + "不是素数");
    // }


    function isSu(num) { //形参
        // var num = 9;
        var flag = true; // 假设是素数

        for (var i = 2; i < num; i++) {
            if (num % i == 0) { //如果存在能整除num的数
                flag = false;  // 不是素数(合数)
                break;
            }
        }
        // if (flag) {
        //     document.write(num + "是素数<br>");
        // } else {
        //     document.write(num + "不是素数<br>");
        // }

        // return flag ? "素数" : "非素数";
        // return flag ? 1 : 0;
        return flag;

    }

    // 注意:
    // 1. 函数在没有调用时也是存在内存当中的,调用时才会执行 (函数名 可以理解为 变量名)
    // 2. 每次调用都会执行函数的上下文   => 调用方式: 函数()
    // console.log(isSu);

    // isSu(11); // 实参   => true
    // isSu(21); // false
    // isSu(31);

    // var result = isSu(11); // 调用函数 将结果存储到变量 result
    // console.log(result);  // 打印 result

    // console.log(isSu(11)); // 调用函数 打印 函数执行的结果
    // console.log(1 + 1);


    function level(grade) {
        // isNaN(grade)  是否是非数字  非数字 => true  数字 => false
        if (isNaN(grade)) {
            var err = new Error("Please pass in a number!"); // 创建一个error对象
            throw err;
        }
        if (grade < 0 || grade > 100) {
            var err = new Error("Please pass in a number between 0 and 100!"); // 创建一个error对象
            throw err;
        }

        if (grade >= 90) {
            return "A";
        } else if (grade >= 80) {
            return "B";
        } else if (grade >= 70) {
            return "C";
        } else if (grade >= 60) {
            return "D";
        } else {
            return "E";
        }
    }

    // level("a");
    // level(-1);


    console.log(level(11));
    console.log(level(61));
    console.log(level(71));
    console.log(level(81));
    console.log(level(91));



    // 水仙花数
    // 153   =>  1  5  3
    //      n^3  1  125  27  => 153 

    // var num = 123;
    // var bai = Math.floor(num / 100);
    // var shi = Math.floor(num % 100 / 10);
    // var ge = Math.floor(num % 10);

    // var sum = Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3)

    // var flag = (sum === num ? true : false);


    function isShui(num) {
        // var num = 123;
        var bai = Math.floor(num / 100);
        var shi = Math.floor(num % 100 / 10);
        var ge = Math.floor(num % 10);

        var sum = Math.pow(bai, 3) + Math.pow(shi, 3) + Math.pow(ge, 3)

        return sum === num ? true : false;
    }

    for (var i = 100; i <= 999; i++) {
        var result = isShui(i);
        if (result) {
            document.write(i + "是水仙花数<br>");
        }
    }









    // JS  解释性语言
    // 如果 if while 中表达式接收的不是一个布尔值,会先隐式转化为布尔值,在作为表达式
    // var a = 1;
    // if (a) {

    // } else {

    // }

    // isSu()


    // 匿名函数

    // 匿名函数的自调用
    // (function() {

    // })()

    // 将匿名函数存储到数据中
    // var fn = function () {
    //     console.log("hello");
    // }
    // fn();

    // var arr = [1, 2, 3, fn];
    // arr[3]()

    // var obj = {
    //     a: 1,
    //     b: 2,
    //     fn: fn,
    // }





</script>

</html>